package com.woniu.defecttracking.controller.datas;


import com.woniu.defecttracking.commens.Result;
import com.woniu.defecttracking.dto.RoleDto;
import com.woniu.defecttracking.dto.RolePageDto;
import com.woniu.defecttracking.exception.RoleException;
import com.woniu.defecttracking.param.AddRoleParam;
import com.woniu.defecttracking.param.FindRoleParam;
import com.woniu.defecttracking.param.UpdateRoleParam;
import com.woniu.defecttracking.service.RoleService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * <p>
 *  前端控制器
 * </p>
 *
 * @author 倪西
 * @since 2021-12-31
 */
@RestController
@RequestMapping("/role")
public class RoleController {

    @Autowired
    private RoleService roleService;

    /**
    * @作者: 倪西
    * @描述：按条件查询所有的角色信息
    * @时间：2022/1/7 21:51
    * @参数：[findRoleParam]
    * @返回：com.woniu.defecttracking.commens.Result
    **/
    @PostMapping("/findRole")
    public Result findRole(@RequestBody FindRoleParam findRoleParam){
        RolePageDto rolePage = roleService.findRole(findRoleParam);
        return Result.getInstance(rolePage);
    }

    /**
    * @作者: 倪西
    * @描述：查询所有的角色信息
    * @时间：2022/1/7 21:52
    * @参数：[]
    * @返回：com.woniu.defecttracking.commens.Result
    **/
    @PostMapping("/findAllRole")
    public Result findAllRole(){
        List<RoleDto> allRole = roleService.findAllRole();
        return Result.getInstance(allRole).setMessage("查询成功");
    }

    /**
    * @作者: 倪西
    * @描述：删除对应的角色
    * @时间：2022/1/7 21:52
    * @参数：[ids]
    * @返回：com.woniu.defecttracking.commens.Result
    **/
    @PostMapping("/removeRole")
    public Result removeRole(@RequestBody List<Integer> ids){
        Boolean bool = roleService.removeRole(ids);
        if (bool){
            return Result.getInstance(null).setMessage("删除成功");
        }else{
            return Result.getInstance(null).setMessage("删除失败").setCode(433);
        }
    }

    /**
    * @作者: 倪西
    * @描述：改变对应角色的状态
    * @时间：2022/1/7 21:53
    * @参数：[id]
    * @返回：com.woniu.defecttracking.commens.Result
    **/
    @GetMapping("/changeRole/{id}")
    public Result changeRole(@PathVariable("id") Integer id) throws RoleException {
        Boolean bool = roleService.changeRole(id);
        if (bool){
            return Result.getInstance(null).setMessage("修改成功");
        }else {
            return Result.getInstance(null).setMessage("修改失败").setCode(422);
        }
    }

    /**
    * @作者: 倪西
    * @描述：新增角色
    * @时间：2022/1/7 21:53
    * @参数：[addRoleParam]
    * @返回：com.woniu.defecttracking.commens.Result
    **/
    @PostMapping("/addRule")
    public Result addRule(@RequestBody AddRoleParam addRoleParam) throws RoleException {
        RoleDto roleDto = roleService.saveRole(addRoleParam);
        if (null!=roleDto){
            return Result.getInstance(roleDto).setMessage("新增成功");
        }else {
            return Result.getInstance(null).setMessage("新增失败").setCode(411);
        }
    }

    /**
    * @作者: 倪西
    * @描述：修改对应的角色信息
    * @时间：2022/1/7 21:54
    * @参数：[updateRoleParam]
    * @返回：com.woniu.defecttracking.commens.Result
    **/
    @PostMapping("/updateRole")
    public Result updateRole(@RequestBody UpdateRoleParam updateRoleParam) throws RoleException {
        RoleDto roleDto= roleService.updateRole(updateRoleParam);
        return Result.getInstance(roleDto);
    }
}

